package org.holoeverywhere.preference;
import android.content.Context;
import android.content.res.TypedArray;
import org.holoeverywhere.LayoutInflater;
import org.holoeverywhere.ThemeManager;
import org.holoeverywhere.addon.IAddonThemes;
import org.holoeverywhere.addon.IAddonThemes.ThemeResolver;
public class PreferenceInit {
public static final String PACKAGE;
public static final int THEME_FLAG;
private static final IAddonThemes sThemes;
static {
PACKAGE = PreferenceInit.class.getPackage().getName();
sThemes = new IAddonThemes();
THEME_FLAG = sThemes.getThemeFlag();
LayoutInflater.register(PreferenceFrameLayout.class);
LayoutInflater.register(FragmentBreadCrumbs.class);
map(R.style.Holo_Internal_Preference, R.style.Holo_Internal_Preference_Light);
}
private static final ThemeResolver sThemeResolver = new ThemeResolver() {
@Override
public int resolveThemeForContext(Context context, int invalidTheme) {
TypedArray a;
int preferenceTheme = (a = context.obtainStyledAttributes(new int[]{
R.attr.preferenceTheme
})).getResourceId(0, 0);
a.recycle();
if (preferenceTheme != 0) {
return preferenceTheme;
}
return ThemeManager.getThemeResource(ThemeManager.getThemeType(context) | THEME_FLAG, false);
}
};
private PreferenceInit() {
}
public static Context context(Context context) {
return sThemes.context(context, 0, sThemeResolver);
}
/**
* Nop method for execute static code block
*/
public static void init() {
}
/**
* Remap all Preference themes
*/
public static void map(int theme) {
map(theme, theme, theme);
}
/**
* Remap PreferenceThemes, splited by dark and light color scheme. For mixed
* color scheme will be using light theme
*/
public static void map(int darkTheme, int lightTheme) {
map(darkTheme, lightTheme, lightTheme);
}
/**
* Remap PreferenceThemes, splited by color scheme
*/
public static void map(int darkTheme, int lightTheme, int mixedTheme) {
sThemes.map(darkTheme, lightTheme, mixedTheme);
}
public static Context unwrap(Context context) {
return sThemes.unwrap(context);
}
}